﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Diagram
{
    [Serializable]
    public class Asocjacja : ElementNaDiagramie
    {
        public String Tekst
        {
            get
            {
                return ((ModelUML.AsocjacjaUML)element).Tekst;
            }
            set
            {
                ((ModelUML.AsocjacjaUML)element).Tekst = value;
            }
        }
        [Serializable]
        public class KoncowkaAsocjacji
        {
            internal ModelUML.AsocjacjaUML.KoncowkaAsocjacji koncowkaAso = null;
            internal int index = -1;
            ModelUML.AsocjacjaUML.EndTypeEnum endType;

            public String Tekst
            {
                get
                {
                    return koncowkaAso.Tekst;
                }
                set
                {
                    koncowkaAso.Tekst = value;
                }
            }
            public String Multiplikator
            {
                get
                {
                    return koncowkaAso.Multiplikator;
                }
                set
                {
                    koncowkaAso.Multiplikator = value;
                }
            }
            
            public ModelUML.AsocjacjaUML.EndTypeEnum EndType
            {
                get
                {
                    return koncowkaAso.EndType;
                }
                set
                {
                    koncowkaAso.EndType = value;                    
                }
            }
            Element ownedEnd;            
            public Element OwnedEnd
            {
                get
                {
                    return ownedEnd;
                }
            }
            internal KoncowkaAsocjacji(Element ownedEnd, ModelUML.AsocjacjaUML.EndTypeEnum endType)
            {
                this.ownedEnd = ownedEnd;
                this.endType = endType;
            }
        }
        private List<KoncowkaAsocjacji> konce;
        public Asocjacja(ModelUML.AsocjacjaUML aso)
        {
            element = aso;
            konce = new List<KoncowkaAsocjacji>();
        }
        public void DodajZakonczenie(Element element, ModelUML.AsocjacjaUML.EndTypeEnum endType)
        {
            KoncowkaAsocjacji k = new KoncowkaAsocjacji(element, endType);
            k.koncowkaAso = ((ModelUML.AsocjacjaUML)this.element).DodajZakonczenie(element.element, endType);
            konce.Add(k);
        }
        public void DodajZakonczenie(Element element)
        {
            KoncowkaAsocjacji k = new KoncowkaAsocjacji(element, ModelUML.AsocjacjaUML.EndTypeEnum.brak);
            k.koncowkaAso = ((ModelUML.AsocjacjaUML)this.element).DodajZakonczenie(element.element, ModelUML.AsocjacjaUML.EndTypeEnum.brak);
            konce.Add(k);
        }
        public KoncowkaAsocjacji this[int index]
        {
            get
            {
                konce[index].index = index;
                return konce[index];
            }
        }
        public int Count
        {
            get
            {
                return konce.Count;
            }
        }

        
    }
}
